Direct memory access (DMA) modules are known to perform read and write operations that allow data to be transferred to or from a memory without the need for a processor to be active in the transfer operation, thereby freeing the processor to perform other tasks. Accordingly, the processor can initiate a data transfer and then perform other tasks while the transfer is performed by the DMA module. The processor will then receive an interrupt from the DMA module once the transfer is complete. However, in modern systems, the DMA operations have to serve multiple central processing units (CPUs) and/or software threads. Each such thread can ask for service at any time. Accordingly, the situation can arise in which several threads request either the same or overlapping data or data. Also, the data may already been uploaded and so may reside in internal ram. Managing these requests efficiently is important. It is especially important to prevent uploading the same data twice. It is also important to ensure that different data is not written to the same external storage location. To solve these problems, a centralized management function is needed to determine for each DMA request whether requested data is already in a local cache or memory and where that data might reside. If the data is not in local cache or memory, then where to put it in internal storage (i.e., where to cache the data so that it will be accessible the next time it is required). The presently disclosed method presents such a centralized management function and an apparatus for implementing this function.